import pandas as pd

import matplotlib.pyplot as plt

# 读取数据
df = pd.read_csv('数据.csv')

# 假设评论列名为 '评论'，请根据实际情况修改
comment_col = 'review'
if comment_col not in df.columns:
    raise ValueError(f"未找到评论列 '{comment_col}'，请检查文件列名。")

# 统计每条评论的字数
df['字数'] = df[comment_col].astype(str).apply(len)

# 定义分类函数
def classify(length):
    if 1 <= length <= 10:
        return 'A: 1-10字'
    elif 11 <= length <= 20:
        return 'B: 11-20字'
    elif 21 <= length <= 30:
        return 'C: 21-30字'
    elif length >= 31:
        return 'D: 31字及以上'
    else:
        return '空评论'

df['区间'] = df['字数'].apply(classify)

# 统计各区间数量和百分比
count = df['区间'].value_counts().sort_index()
percent = count / count.sum() * 100

# 合并为一个DataFrame
result = pd.DataFrame({'数量': count, '百分比': percent.round(2)})

# 打印分布分析结果
print(result)

# 生成饼图
plt.rcParams["font.sans-serif"] = ["SimHei"] # 使用黑体
plt.rcParams["axes.unicode_minus"] = False # 正常显示负号
plt.figure(figsize=(6, 6))
plt.pie(result['数量'], labels=result.index, autopct='%1.1f%%', startangle=140)
plt.title('评论字数区间分布')
plt.axis('equal')
plt.tight_layout()
plt.show()